Lingyu Zhou

服务器Alist搭建日志

在四年一度特殊的日子,突然燃起写作的兴趣。于是便想把前两天部署Alist的过程和中途碰到的一些问题同解决方案记录下来。

之前一直看up主推荐Alist,刚好之前感恩节RackNerd低价抢购了一台VPS,但却一直没时间部署。几个月前使用纯CLI尝试搭建了一次,使用的是IP:PORT的方式访问应用,之后一直也没解决反向代理的问题。不料后来服务器密码忘了,Alist搭建就一直搁置了。直到最近才有闲工夫将项目完善。不料过程中问题不断:

网络配置文件?

根据Alist官方文档,需要在网站的配置文件的server字段中加入以下代码:

location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Range $http_range;
    proxy_set_header If-Range $http_if_range;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:5244;
    # 上传的最大文件尺寸
    client_max_body_size 20000m;
}

查阅资料才得知这个配置文件根据网页服务器框架有所区别。拿最简单的NGINX为例,其文件nginx.conf位于/etc/nginx 目录下。但是找了半天也没发现,于是我便手动安装了NGINX,nginx.conf 是有了但是修改完配置文件,添加完DNS解析后仍无法通过域名访问。查阅资料后我选择了最靠谱的方法BTPanel。

port 80 not found?

但安装过程中一直报错,显示无法找到服务器http的80端口。虽然听上去很离谱,但我还是试着去解决了一下,但于CLI放行端口后也无果。在谷歌上找半天也没有类似的问题。于是便放弃了修改配置的念头,从而重装了服务器系统。由于对于apt-get的原生支持,一开始选择了Debian,没想到Debian安装出现一样的问题。于是第二次重装选择了CentOS 7。这次终于解决了问题,其实在宝塔官方文档中有对于系统的建议:

系统兼容性顺序:Centos7.x > Debian10 > Ubuntu 20.04 > Cenots8.x > Ubuntu 18.04 > 其它系统,并且不建议使用Centos6,官方不再支持更新。

宝塔面板软件安装一直等待执行?

好不容易进了后台发现dependency一直在等待安装,过了半小时log也没有输出。按照网上的说法重启多次也无果。最后翻遍论坛找到了有用的解决方法:终端执行 wget http://download.bt.cn/tools/auto_fix.sh && bash auto_fix.sh (cr @大炮运维V587

等待30分钟php, mySql等环境配置好后就可以开始部署Alist了。这次没有使用CLI,采用了docker的方式部署:终端执行 docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 --name="alist" xhofe/alist:latest

管理员密码?

部署好后,通过docker的5244端口访问发现没有首次部署设置密码的prompt,不知道是版本更新还是浏览器cookies的问题。尝试了包括第一次安装在内的许多密码都提示错误。单其实在Alist官方文档内就有说明,通过终端执行 docker exec -it alist ./alist -password 并替换 password 就可以通过CLI更改密码。

反向代理

反代的过程还算顺利,先创建站点,指定域名。这步结束后若DNS解析已配置完毕应该可以访问到宝塔的网页创建成功界面。接下来就是设置反代映射。首先申请SSL(此步骤需优先处理)再在站点设置内找到反向代理并把localhost5244端口(127.0.0.1:5244)指向指定的域名就好了,原理本质上是当通过URL访问网站时,通过网站的默认80 (HTTP)或443 (HTTPS) 端口监听了5244端口的内容。这一步结束后应该就能安全地通过域名访问server ip:5244了。

*最早尝试过使用Cloudflare的DNS解析但是A记录不支持端口号,但这可能正是反向代理存在的意义吧?

Request failed with status code 500?

添加完Mega网盘后在尝试上传时出现了问题。在盘内做任意修改都会提示 Request failed with status code 500。一开始以为是端口的问题心凉了半截,也以为是权限的问题但是admin也无法做任何修改。但后来发现在PikPak和Yandex盘上传没有出现问题。

那么500到底是什么错误呢?根据Mozilla MDN Web Docs:

500 Internal Server Error

The HyperText Transfer Protocol (HTTP) 500 Internal Server Error server error response code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.
This error response is a generic “catch-all” response. Usually, this indicates the server cannot find a better 5xx error code to response. Sometimes, server administrators log error responses like the 500 status code with more details about the request to prevent the error from happening again in the future.

本质上是服务器内部的问题,既然Alist访问和修改都没问题那大概率是Mega内部或者在挂载Mega的时候参数的问题。目前正在维修…

其他自定义内容的格式都是小问题了,总之记得用<div></div> 就行。也可以直接导入别人的美化方案

总之Alist总算是搭好了: https://drive.zhoulingyu.net,目前也开启了访客上传。缺点就是有点慢,且在GFW内无法访问Mega和PikPak内的文件。但总算摆脱登录和2FA的繁琐步骤了。